home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl
-
- use lib qw(/usr/lib/libDrakX);
-
- use common qw(:common :functional :file);
- use interactive;
- use log;
-
- local $_ = join '', @ARGV;
-
- /-h/ and die "usage: drakxservices\n";
-
- $::isStandalone = 1;
-
- my $in = vnew interactive('su');
-
- my @l = grep { !/\.rpm/ } map { chop; $_ } `cd /etc/rc.d/init.d ; grep -l "chkconfig:" *`;
- my @before = map { bool(@_ = glob("/etc/rc.d/rc*.d/S*$_")) } @l;
-
- my $after = $in->ask_many_from_list("drakxservices",
- _("Choose which services should be automatically started at boot time"),
- \@l, \@before);
-
- mapn {
- my ($name, $before, $after) = @_;
- if ($before != $after) {
- if ($after) {
- if (cat_("/etc/rc.d/init.d/$name") =~ /^chkconfig:\s+-/m) {
- system("chkconfig --add $name");
- } else {
- `/sbin/runlevel` =~ /\s(\d+)/ or die "bad runlevel";
- $1 == 3 || $1 == 5 or log::l("strange runlevel: ``$1'' (neither 3 nor 5)");
- system("chkconfig --level $1 $name on");
- }
- } else {
- system("chkconfig --del $name");
- }
- }
- } \@l, \@before, $after if $after;
-
- $in->exit(0);
-